因为历史原因以及为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型。这一点很容易引起混乱,编程时一定要注意区分字符串字面值和string数据类型的使用,这很重要。
请问这是什么意思?
6 个解决方案
#1
额~~~C字符串是const char * 类型,而string是标准库类型,
当你在操作文件时,这种区别就很明显了,打开文件时的文本名一定是
const char*类型的,而如果你用的是string类型时就会出错
string str = "aaa.txt";
ifstream infile;
infile.open(str); // 此处出错
infile.open("aaa.txt"); // 或者是 infile.open(str.c_str()); 也可以!!这时就不会出错了!
// open()函数的参数一定要是C风格字符串才行
当你在操作文件时,这种区别就很明显了,打开文件时的文本名一定是
const char*类型的,而如果你用的是string类型时就会出错
string str = "aaa.txt";
ifstream infile;
infile.open(str); // 此处出错
infile.open("aaa.txt"); // 或者是 infile.open(str.c_str()); 也可以!!这时就不会出错了!
// open()函数的参数一定要是C风格字符串才行
#2
string是stl中的类模板,C++的字符串字面值的类型是const char[N],两者不是一回事。
#3
c的字符串头文件是#include<string.h>或者#include<cstring>
stl的string头文件是#include<string> 而且在名字 空间std中。
lz可以 右键 打开这些头文件看看。
stl的string头文件是#include<string> 而且在名字 空间std中。
lz可以 右键 打开这些头文件看看。
#4
string是STL模板里面的 使用vector来编写的 char*是以'\0'结尾 但是string不是的
#5
那就是 char*和string的差别了
#6
++
string里隐含了个char *指针,这个指针指向真正存放字符串字面值的内存地址。
#1
额~~~C字符串是const char * 类型,而string是标准库类型,
当你在操作文件时,这种区别就很明显了,打开文件时的文本名一定是
const char*类型的,而如果你用的是string类型时就会出错
string str = "aaa.txt";
ifstream infile;
infile.open(str); // 此处出错
infile.open("aaa.txt"); // 或者是 infile.open(str.c_str()); 也可以!!这时就不会出错了!
// open()函数的参数一定要是C风格字符串才行
当你在操作文件时,这种区别就很明显了,打开文件时的文本名一定是
const char*类型的,而如果你用的是string类型时就会出错
string str = "aaa.txt";
ifstream infile;
infile.open(str); // 此处出错
infile.open("aaa.txt"); // 或者是 infile.open(str.c_str()); 也可以!!这时就不会出错了!
// open()函数的参数一定要是C风格字符串才行
#2
string是stl中的类模板,C++的字符串字面值的类型是const char[N],两者不是一回事。
#3
c的字符串头文件是#include<string.h>或者#include<cstring>
stl的string头文件是#include<string> 而且在名字 空间std中。
lz可以 右键 打开这些头文件看看。
stl的string头文件是#include<string> 而且在名字 空间std中。
lz可以 右键 打开这些头文件看看。
#4
string是STL模板里面的 使用vector来编写的 char*是以'\0'结尾 但是string不是的
#5
那就是 char*和string的差别了
#6
++
string里隐含了个char *指针,这个指针指向真正存放字符串字面值的内存地址。