我有一个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 == hello
和input[i] == olleh
,我想将inputReversed
设为olleh
。
这可行吗?谢谢!
答案 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_str
和strlen
,只需使用size
或length
会员功能。
您还可以使用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