代码之家  ›  专栏  ›  技术社区  ›  question

复制字符串

  •  1
  • question  · 技术社区  · 7 年前

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

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

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

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

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   Sergey Kalinichenko    7 年前

    这是因为您正在使用 operator >> 将您的输入读入 std::string 。这有效地删除了输入中的所有空白,因为您需要逐字逐句地进行检查。

    您需要使用保留空白的输入方法,例如 std::getline 。它还会将输入读入 标准::字符串 ,但将保留空间:

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

    现在看不到新线了

    自从 std::getline 不保留换行符,您需要在输出时将其放回原处。例如,如下所示:

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