📅  最后修改于: 2023-12-03 15:23:07.572000             🧑  作者: Mango
在 C++ 中,使用 cin
函数读取带空格的字符串会出现问题,因为 cin
在遇到空格时会自动停止读取。为了读取完整的带空格字符串,我们需要使用其他方法。
getline
函数可以一次性读取整行字符串,包括空格。具体用法如下:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cout << "请输入带空格的字符串:";
getline(cin, str);
cout << "您输入的字符串是:" << str << endl;
return 0;
}
上面的代码演示了使用 getline
函数读取带空格的字符串。运行结果如下:
请输入带空格的字符串:Hello world!
您输入的字符串是:Hello world!
scanf
函数也可以读取带空格的字符串,但需要使用 %[^\n]
标记指定读取的字符范围为行尾之前的所有字符,不包括换行符。代码如下:
#include <cstdio>
using namespace std;
int main() {
char str[100];
printf("请输入带空格的字符串:");
scanf("%[^\n]", str);
printf("您输入的字符串是:%s\n", str);
return 0;
}
注意,使用 scanf
读取字符串需要指定字符数组的大小,以防止溢出。
以上就是在 C++ 中读取带空格的字符串的两种方法:使用 getline
函数和使用 scanf
函数。使用 getline
函数更加方便简单,适合读取一整行的字符串。使用 scanf
函数则需要注意格式化字符串的写法,但可以更加灵活地控制读取的字符范围。