从getline中提取Char数组,不使用String

时间:2016-11-20 22:09:42

标签: c++ arrays parsing char text-extraction

所以我想从文本文件中获取getline,并提取每行中的第一个单词并保存在char数组中" op"。我在处理第一个单词之前的空格时遇到了麻烦。文本中的第一行是#34;真棒酱#34;第二行是"是",第三行是"很酷",第四个是"是的好"。在耶和华之前处理空间方面遇到了麻烦。

infile.open(" vec.txt&#34);

//define line pointer

char* line=new char[100];   
char other[100];
char op[100]; 
int numofLines = 0; 
int k = 0; 
bool wordStart = false; 

//get line
while (infile.getline(other,100))
{
    int numofChar = k; 
    int numofOpChar = 0; 
    int r = 0; 
    int p = 0; 

    while (other[k] == ' ')
    {
        while (other[k] != ' ')
        {
            wordStart = true; 
        }
        k++; 
        cout << k << endl; 
    }

    if (wordStart = true)
    {
        do
        {
            op[numofOpChar] = other[numofChar]; 
            numofChar++; 
            numofOpChar++; 

        }
        while (other[numofChar] != ' '); 

        if (op[numofChar] != ' ')
        {
            cout << op << endl; 
        }

    }

}

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的需求,请参阅以下内容。为简单起见,我使用了std::stringstream而不是文件。

#include <iostream>
#include <sstream>
#include <cstring>
#include <limits>

int main() 
{
    const size_t N = 100;
    const char text[] = "awesome sauce\n" "yes\n" "cool\n" " yeah ok";
    char line[N];
    char op[N];
    size_t pos = 0;

    std::istringstream is( text );

    while ( is >> op )
    {
        is.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
        std::cout << op << std::endl;
    }       

    return 0;
}

程序输出

awesome
yes
cool
yeah

答案 1 :(得分:0)

你应该用k来开始字符串提取

numofchar = k;
if (wordStart = true)
{
    do
    {
        op[numofOpChar] = other[numofChar];