我只能使用<iostream>
和<string>
标头。 (我正在使用C ++)
我将从文本中读取输入并将其转换为小写类型。我读取输入并将其转换为小写但我有一个问题。它读取 - 正确地转换所有内容但是当我打印它们时,它们之间没有空间。我应该复制字符串中的每个“单词”并计算所有单词。我该怎么做?你能救我吗?
我使用此算法转换为小写:
if('A'<=s[i] && s[i]<='Z')
s[i]=s[i]+'a'-'A';
如何将这些单词逐个复制到另一个字符串中?
答案 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