字符串更改程序输出随机字符

时间:2017-01-31 01:28:39

标签: c++ string input output

#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string output;
string words;
int i;

int main()
{
    cin >> words; // gets words from user
    output = ""; // readys the output string
    i = 0;      // warms up the calculator
    int size = words.size();  // size matters
    while (i <= size) { // loops through each character in "words"       (can't increment in the function?)
        output += ":regional_indicator_" + words[i] +':';  //     appends output with each letter from words plus a suffix and prefix
        ++i;
    }               

    cout << output << endl; // prints the output
    return 0;
}

我对这段代码的意图非常明确我想。只需一个句子,用该字符替换所有字符+后缀和前缀。 我的问题是,当在调试器中运行时,我将输入"hello world",程序将输出"osss"

我完全没有C ++教育,而且完全失去了。是我的++i吗?

1 个答案:

答案 0 :(得分:0)

这一行:

output += ":regional_indicator_" + words[i] +':';  //     appends output with each letter from words plus a suffix and prefix

不起作用。仅当其中一个参数为+时,std::string运算符重载字符串连接才有效。但是你试图将它与C字符串文字和char一起使用。将其更改为:

output += "regional_indicator_";
output += words[i];
output += ':';

这会为每个部分使用+=重载std::string,并按照您的意愿行事。

此外,如果您想要读取整行,而不只是单个单词,请使用:

getline(cin, words);