#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
吗?
答案 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);