我正在尝试制作一个翻转你输入的单词的程序。当我尝试写单词并且它要求输入两次时出现问题:
cin >> Arr >> myStr;
它问两次是合乎逻辑的,但每次我尝试使用getline时,编译器都会发出错误(即使它工作了,我必须给输入两次),我需要它在字符数组中包含空格。 / p>
这是我的完整代码:
#include <iostream>
#include <string>
using namespace std;
string myStr;
string newVal;
int i;
int main()
{
char Arr[i];
cout << "Enter: ";
cin >> Arr >> myStr;
for (i = myStr.length(); i >= 0; i--)
{
cout << Arr[i];
}
cout << endl;
return 0;
}
循环有效。
通过正确使用getline可以纠正第一个问题。
第二个,我不知道(使用单个输入来分配两个变量)。
提前致谢,如果这是一个太荒谬的问题,我道歉。
答案 0 :(得分:2)
也许您可以尝试一下这个解决方案,它比您的C ++风格更多:
#include <iostream>
#include <string>
int main() {
std::string myStr;
std::cout << "Please give me a string: ";
if(std::getline(std::cin, myStr)) {
for(std::string::reverse_iterator it = myStr.rbegin();
it != myStr.rend();
++it) {
std::cout << *it;
}
std::cout << std::endl;
}
}
我建议您在C ++中使用always std :: string,因为它具有您可能需要的所有方法和功能。因此,不要像在C中那样浪费你的时间。
答案 1 :(得分:1)
就像我说的那样。我正在挖掘并想出这个:
#include <iostream>
#include <string>
using namespace std;
string myStr;
int i;
int main()
{
cout << "Enter: ";
getline (cin, myStr);
i = myStr.size();
cout << i << endl;
char Arr[i];
for (int a = 0; a <= i; a++)
{
Arr[a] = myStr[a];
}
for (i; i >= 0; i--)
{
cout << Arr[i];
}
return 0;
}
我不知道字符串内容也可能有类似数组的行为。测试出来!像魅力一样(就测试而言)。
我格式化代码的方式不超过27行代码。
感谢所有参与者,你帮助了我很多。
P.S:以前无法回答,我的声誉不能很快就能做到。