C ++使char数组在输入时识别空格

时间:2014-08-10 06:20:19

标签: c++ arrays

我正在尝试制作一个翻转你输入的单词的程序。当我尝试写单词并且它要求输入两次时出现问题:

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可以纠正第一个问题。

第二个,我不知道(使用单个输入来分配两个变量)。

提前致谢,如果这是一个太荒谬的问题,我道歉。

2 个答案:

答案 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:以前无法回答,我的声誉不能很快就能做到。