📜  在 cpp 中读取字符串时包含空格 - C++ (1)

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

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

在 C++ 中,读取包含空格的字符串可能会让初学者困惑。本文将介绍几种读取包含空格的字符串的方法。

1. 使用 std::getline()

C++ 中的 std::getline() 函数可以一次读取一行字符串,包括其中的空格。使用方法如下:

#include <iostream>
#include <string>

int main() {
    std::string s;
    std::getline(std::cin, s);
    std::cout << s;
    return 0;
}

上面的代码中,std::cin 表示从标准输入流中读取输入。读取到的字符串将保存在 s 变量中,最后输出字符串内容。

2. 使用流提取运算符

在 C++ 中,可以使用流提取运算符 >> 来逐个读取由空格分隔开的字符串。使用方法如下:

#include <iostream>
#include <string>

int main() {
    std::string s;
    std::cin >> s;
    std::cout << s;
    return 0;
}

上面的代码中,std::cin >> s 会读取 std::cin 中的下一个字符串,直到遇到空格或换行符为止。读取到的字符串将保存在 s 变量中,最后输出字符串内容。

需要注意的是,这种方法只能读取一段没有空格的字符串。如果需要读取包含空格的字符串,需要在字符串中加上引号,例如:

#include <iostream>
#include <string>

int main() {
    std::string s;
    std::cin >> s;
    std::getline(std::cin.ignore(), s);   // 忽略第一个空格,读取整行
    std::cout << s;
    return 0;
}
3. 使用 getchar() 函数

最后,可以使用 getchar() 函数逐个读取字符,直到读取到换行符为止。读取到的字符可以使用字符串拼接起来,形成完整的字符串。使用方法如下:

#include <iostream>

int main() {
    std::string s;
    char c;
    while ((c = getchar()) != '\n') {
        s += c;
    }
    std::cout << s;
    return 0;
}

上面的代码中,使用 getchar() 函数读取字符,直到读取到换行符为止。然后,将读取到的字符拼接起来,形成完整的字符串,最后输出字符串内容。

使用这种方法比较繁琐,但也是一种可行的方法。

总结

本文介绍了三种在 C++ 中读取包含空格的字符串的方法,包括使用 std::getline() 函数、使用流提取运算符和使用 getchar() 函数。这些方法各有自己的特点,在实际开发中可以根据需要灵活选择。