2013-10-13 153 views
1

在固定数组上循环使用getline的正确方法是什么?如果在读取字符块中未找到分隔符,则以下循环将停止。带分隔符的getline

char data[4]; 
while (cin.getline(data, 4, '.')) 
{ 
    ... 
} 

的样本数据,这将导致循环失败:“什么是正确的方法循环与getline固定阵列”

asdasdasdasd.asdasdasd 

回答

3

  • 步骤1:不使用C语言风格的char阵列
  • 步骤2:不依赖于具有摆布输入你的程序

可能的解决方案:

std::string token; 
while (std::getline(std::cin, token, '.')) { 
    if (token.empty()) { 
     // TODO 
     continue; // ? 
    } 
    if (token.size() == 4) { 
     // TODO 
    } 
    else { 
     // TODO 
    } 
} 
+0

我不会问这个问题,如果我不想使用C风格的字符数组。 –

+0

@SebastianNowak:然后使用std :: string对象的内容初始化你的char数组,只要确保它足够大。 – LihO

+2

@SebastianNowak这导致了一个明显的问题:*为什么*? –