复制一个字符串

时间:2018-03-24 10:34:11

标签: c++ c++11 visual-c++

我只能使用<iostream><string>标头。 (我正在使用C ++)

我将从文本中读取输入并将其转换为小写类型。我读取输入并将其转换为小写但我有一个问题。它读取 - 正确地转换所有内容但是当我打印它们时,它们之间没有空间。我应该复制字符串中的每个“单词”并计算所有单词。我该怎么做?你能救我吗?

我使用此算法转换为小写:

if('A'<=s[i] && s[i]<='Z') 
    s[i]=s[i]+'a'-'A';

如何将这些单词逐个复制到另一个字符串中?

1 个答案:

答案 0 :(得分:4)

这是因为您使用operator >>将您的输入读入std::string。这样就可以有效地删除输入中的所有空格,因为你会逐字逐句地删除它。

您需要使用保留空白的输入方法,例如std::getline。它还会将输入读入std::string,但会保留空格:

for (std::string line ; std::getline(input, line) ;) {
    // Convert line to lowercase, and write the result
}
  

现在它看不到新行

由于std::getline不保留换行符,因此您需要在写出输出时自行将它们放回去。例如,像这样:

std::cout << lowercaseString << std::endl