21xrx.com
2024-06-03 06:12:28 Monday
登录
文章检索 我的文章 写文章
如何在c++中实现输入带空格的字符串,但输出时去除空格?
2023-07-05 01:15:23 深夜i     --     --
C++ 输入 字符串 空格 去除

在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);

      i--;

    }

  }

  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 库将其转换为一个没有空格的字符串,以便后续处理。无论如何,掌握这些技巧可以使我们更加熟练地进行字符串处理。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复