string直接赋值和通过cin赋值有什么不一样吗?
这是c++连接mysql数据库进行查询操作
这里是希望将查询条件赋值给str
如果直接赋值 string str = “where singer = ’rihanna‘”程序能正常进行,但是如果通过cin赋值的话就会报错
能解释一下为什么吗
string直接赋值和通过cin赋值有什么不一样吗?
这是c++连接mysql数据库进行查询操作
这里是希望将查询条件赋值给str
如果直接赋值 string str = “where singer = ’rihanna‘”程序能正常进行,但是如果通过cin赋值的话就会报错
能解释一下为什么吗
在 C++ 中,std::string 和字符数组之间有一些重要的区别。其中一个主要区别是使用字符串字面值(如 "where singer = 'rihanna'")时,C++ 编译器会自动为其添加一个空字符('\0')来表示字符串的结尾。而通过 cin 输入的字符串不会在末尾自动添加空字符,因此需要手动添加。
在您的代码中,如果直接赋值字符串字面值给 str 变量,则字符串字面值在内部实际上已经包含了 '\0' 字符,这就是为什么您可以在不添加空字符的情况下使用字符串字面值。但是,如果您通过 cin 输入字符串,则输入的字符串末尾没有 '\0' 字符,因此需要手动添加。
为了解决这个问题,您可以在读取输入后将字符串的末尾添加一个空字符,例如:
std::string str;
std::cout << "请输入查询条件:";
std::cin >> str;
str += '\0'; // 添加空字符
此时,您应该就能够正常地将字符串作为参数传递给 mysql_query() 函数了。