2013-03-27 101 views
1

我想学习C++。我现在在线。 我已经写了这个简单的方法,应该要求输入一个字符串,然后返回它。要做到这一点,我使用cin.getLine()方法,但我用cin.getLine字符串后不打印()cin.Getline什么都不返回

string getString(char string[]) 
{ 

    cout << "Please enter a string to process "; 
    cin >> string; 
    cout << "String in getString before process: " << string << "\n"; 
    cin.getline(string, STRINGSIZE); 
    cout << "String after processing: " << string << "\n"; // here string is not printed 
    return string; 
} 

任何人可以帮助我了解我在做什么错?谢谢

+2

你怎么称呼这个功能? 'string'指向一个有效和足够大的内存区域吗?为什么符号名称是'string',它只是把用'std :: string'看到你的代码的人混淆了。这甚至编译? – 2013-03-27 05:46:42

+0

为什么你从'cin'两次读取东西到'string'? – Mat 2013-03-27 05:48:02

+0

STRINGSIZE的价值是什么,您的测试输入是什么? – MatthewD 2013-03-27 05:49:11

回答

2

你一读串std::stringcin >> string;,然后再读取cincin.getline(string, STREAMSIZE); 东西没有必要,一旦阅读并返回:

string getString(char string[]){ 
    cout << "Please enter a string to process "; 
    cin >> string; 
    cout << "String in getString before process: " << string << "\n"; 
    // process this, do whatever you describe as processing it 
    cout << "String after processing: " << string << "\n"; // string is printed 
    return string; 
} 

否则,如果你想使用getline,这样做:

std::string name; 

    std::cout << "Please, enter your full name: "; 
    std::getline (std::cin,name); // or std::getline(std::cin,string, 'r'); to read 
    //only to delimiter character 'r' 
    std::cout << "Hello, " << name << "!\n"; 

所以要记住的事情是使用getline OR cin,不是b另外,除非真的有一些特别的原因,否则