C ++将For循环的输出分配给变量

时间:2015-10-20 21:39:27

标签: c++

我有一个for循环,向后返回用户的输入。它们输入一个字符串,然后循环反转它。这是它的样子:

string input;                          //what user enters
const char* cInput = input.c_str();    //input converted to const char*

for(int i = strlen(cInput) - 1; i >= 0; i--)
   cout << input[i];     //Outputs the string reversed

如何设置cout << input[i]作为新字符串的值,而不是input[i]?就像我想要一个名为string inputReversed的字符串并将其设置为input[i]一样。

换句话说,如果input == helloinput[i] == olleh,我想将inputReversed设为olleh

这可行吗?谢谢!

4 个答案:

答案 0 :(得分:2)

只需声明输出字符串并附加到+=append成员函数:

string inputReversed;

for(int i = input.size() - 1; i >= 0; i--)
    inputReversed += input[i];         // this
//  inputReversed.append(input[i]);    // and this both do the same thing

请注意,您不需要c_strstrlen,只需使用sizelength会员功能。

您还可以使用std::reverse

使代码更具可读性
string inputReversed = input;
std::reverse(inputReversed.begin(), inputReversed.end());

std::reverse_copy,因为你正在制作原始字符串的副本:

string inputReversed;
std::reverse_copy(input.begin(), input.end(), std::back_inserter(inputReversed));

答案 1 :(得分:2)

string inputReversed(input.rbegin(), input.rend());

答案 2 :(得分:1)

如果我理解你的要求你想要一个变量来存储反向字符串并输出那个? 如果是这样,你可以这样做

string input, InputReversed; 
                         //what user enters
const char* cInput = input.c_str();    //input converted to const char*

for(int i = strlen(cInput) - 1; i >= 0; i--){

    InputReversed += input[i];     

}
cout << InputReversed;  //Outputs the string reversed

答案 3 :(得分:0)

离开这个主题可能对你有所帮助。 How do I concatenate const/literal strings in C?

看起来你想要的是创建一个新的字符串,它在循环的末尾将包含向后输入。

string input;                          //what user enters
const char* cInput = input.c_str();    //input converted to const char*
char inputReversed[len(input)];

for(int i = strlen(cInput) - 1; i >= 0; i--)
   output = strcpy(output, input[i]);     //Outputs the string reversed