📜  在 C++ 中读取带空格的字符串(1)

📅  最后修改于: 2023-12-03 15:23:07.572000             🧑  作者: Mango

在 C++ 中读取带空格的字符串

在 C++ 中,使用 cin 函数读取带空格的字符串会出现问题,因为 cin 在遇到空格时会自动停止读取。为了读取完整的带空格字符串,我们需要使用其他方法。

使用 getline 函数

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 函数

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 函数则需要注意格式化字符串的写法,但可以更加灵活地控制读取的字符范围。