在C++中,输入带有空格的字符串可能是一项具有挑战性的任务。与此同时,当需要输出这些字符串时,需要首先去除这些空格,这通常也需要进行一些处理。在本文中,我们将讨论如何在C++中实现输入带有空格的字符串,并在输出时去除这些空格。
- 使用 getline 函数
C++ 中,可以使用 getline 函数来读取一行带有空格的字符串,并存储在一个字符串变量中。getline 函数从输入流中读取到第一个换行符前的所有字符,包括空格,并将其存储在字符串变量中。
例如,下面的代码段演示如何使用 getline 函数输入带有空格的字符串:
#include <iostream>
#include <string>
using namespace std;
int main()
string str;
cout << "Enter a string with whitespace: ";
getline(cin, str);
cout << str;
return 0;
Enter a string with whitespace: This is a string
This is a string
- 手动删除空格
读取含有空格的字符串后,删除其中的空格通常需要手动完成。使用 s.erase() 函数可以删除一个字符串中的所有空格。
例如,下面的代码演示了如何使用 s.erase() 函数来删除一个字符串中的所有空格:
#include <iostream>
#include <string>
using namespace std;
int main()
string str;
cout << "Enter a string with whitespace: ";
getline(cin, str);
for (int i = 0; i < str.size(); i++) {
if (str[i] == ' ') {
str.erase(i, 1);
cout << str;
return 0;
Enter a string with whitespace: This is a string
Thisisastring
在这个例子中,循环遍历了字符串 str 中的所有字符。如果当前字符是一个空格,那么使用 s.erase() 函数来删除它,并将循环变量 i 减1,以便处理下一个字符。
- 使用 stringstream 库
C++ 中的 stringstream 库可以用于将字符串作为流来处理。我们可以使用它来读取带有空格的字符串,然后将其存储在一个字符串变量中,并去除其中的空格。
例如,下面的代码演示了如何使用 stringstream 库来读取带有空格的字符串,并去除其中的空格:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
string str, word;
getline(cin, str);
stringstream ss(str);
while (ss >> word)
cout << word;
return 0;
Thisisastring.
这个例子中,我们首先读取带有空格的字符串,并将其存储在字符串变量 str 中。然后,我们使用 stringstream 对象 ss 来处理这个字符串。
ss >> word 语句用于从字符串流 ss 中读取一个单词,并将其存储在字符串变量 word 中。这个语句会忽略单词间的所有空格。我们可以使用 while 循环,不断地读取单词并输出它们,从而得到一个没有空格的字符串。
在 C++ 中,输入一个带有空格的字符串通常是一项具有挑战性的任务。一旦我们读取了这个字符串,我们需要手动删除其中的空格,或使用 stringstream 库将其转换为一个没有空格的字符串,以便后续处理。无论如何,掌握这些技巧可以使我们更加熟练地进行字符串处理。