标签: getline

getline检查行是否为空格

有没有一种简单的方法来检查一条线是否为空.所以我想检查它是否包含任何空格,如\ r \n\t和空格.

谢谢

c whitespace getline

7
推荐指数
1
解决办法
2万
查看次数

AWK - 使用getline将变量传输到system()?

我有一个理论问题:

1)如何将变量传递给getline()系统?

awk 'BEGIN{var="ls"; var | getline var; system("echo $var")}'
Run Code Online (Sandbox Code Playgroud)

2)如何为输出系统("ls")分配变量并在awk中打​​印结果?

awk 'BEGIN{var="system("ls")"; print '$var'}'
Run Code Online (Sandbox Code Playgroud)

3)你能在系统中分配一个变量(var ="ls")并在awk中打​​印结果吗?

awk 'BEGIN{system(var="ls"); print "'"$var"'"}'
Run Code Online (Sandbox Code Playgroud)

感谢您的信息.

编辑:

torek:谢谢你的回复.

我理解在第一个例子中,你可以这样做:

awk 'BEGIN { while ("ls -l" | getline var) system("echo " var  );}'
Run Code Online (Sandbox Code Playgroud)

对于此应用程序,您不能从system()分配变量输出?如下例所示:

awk 'BEGIN {var="ls -l"; system(var); print var}'
Run Code Online (Sandbox Code Playgroud)

awk getline

7
推荐指数
1
解决办法
1万
查看次数

Getline不断获得换行符.我怎么能避免这个?

基本上我首先采用整数作为输入然后测试用例.我的每个测试用例都是一个字符串.如果字符串的起始模式匹配"HI A"并且它不区分大小写,我想要打回字符串.我写下面的代码来完成这个.我的问题是,当我在每次输入后按Enter键时,getline将换行符作为新输入.我试图通过在每次输入后使用额外的getline来解决这个问题,但问题仍然存在.程序卡在循环中,即使我已经设置了休息条件.我究竟做错了什么?

#include <iostream>
#include <string>
using namespace std;
int main(){
    int N;
    cin >>N;
    string nl;
    getline(cin,nl);
    for (int i=0;i<N;i++){
        string s;
        getline(cin,s);
        //cout <<"string"<<s<<endl;
        int flag=0;
        if ((s.at(0)=='h'||s.at(0)=='H')&&(s.at(1)=='i'||s.at(1)=='I')&&(s.at(2)==' ')&&(s.at(3)=='a'||s.at(3)=='A')) flag=1;

        if (flag==1) cout << s;
        //cout << "not " <<s;
        string ne;
        cout << "i="<< i<<endl;
        if (i==N-1) {break;}
        getline(cin,ne);

    }
}
Run Code Online (Sandbox Code Playgroud)

以下是示例输入:

5
Hi Alex how are you doing
hI dave how are you doing
Good by Alex
hidden agenda
Alex greeted Martha by saying Hi Martha …
Run Code Online (Sandbox Code Playgroud)

c++ string getline

7
推荐指数
2
解决办法
3万
查看次数

从Swift中的大文本文件中读取行直到新行为空:Swift方式

我有以下文本文件结构(文本文件很大,大约100,000行):

A|a1|111|111|111
B|111|111|111|111

A|a2|222|222|222
B|222|222|222|222
B|222|222|222|222

A|a3|333|333|333
B|333|333|333|333

...
Run Code Online (Sandbox Code Playgroud)

我需要提取一段与给定键相关的文本.例如,如果我的密钥是A | a2,我需要将以下内容保存为字符串:

A|a2|222|222|222
B|222|222|222|222
B|222|222|222|222
Run Code Online (Sandbox Code Playgroud)

对于我的C++和Objective C项目,我使用了C++ getline函数,如下所示:

std::ifstream ifs(dataPathStr.c_str());

NSString* searchKey = @"A|a2";
std::string search_string ([searchKey cStringUsingEncoding:NSUTF8StringEncoding]);

// read and discard lines from the stream till we get to a line starting with the search_string
std::string line;

while( getline( ifs, line ) && line.find(search_string) != 0 );

// check if we have found such a line, if not report an error
if( line.find(search_string) != 0 )
{
 data = …
Run Code Online (Sandbox Code Playgroud)

readline getline swift

7
推荐指数
1
解决办法
8936
查看次数

cin.get()和cin.getline()之间的区别

我是编程新手,我在C++中有一些问题get()getline()功能.

我对这两个功能的理解:

getline()函数读取整行,并使用Enter键传输的换行符来标记输入的结束.该get()函数很像getline()但不是读取并丢弃换行符,而是get()将该字符留在输入队列中.

我正在读的书(C++的Primer Plus)是使用暗示get()getline().我的困惑是,它不会getline()get()确保最终更安全'\n'.另一方面,get()只会挂起输入队列中的字符,从而可能导致问题?

c++ get cin getline

7
推荐指数
3
解决办法
4万
查看次数

在文本文件C++上返回一行

我的程序使用以下方法从文本文件中读取一行:

std::ifstream myReadFile("route.txt");
getline(myReadFile, line)
Run Code Online (Sandbox Code Playgroud)

如果它找到我正在寻找的东西(标签),它会将该行存储在临时字符串中.我不想继续这个,直到我找到一些其他标签,如果我找到另一个标签,我希望能够返回到前一行,以便程序读取再次作为其他标签,并做其他事情.

我一直在看putback()和unget()我很困惑如何使用它们,如果它们可能是正确的答案.

c++ file getline

7
推荐指数
1
解决办法
1万
查看次数

std :: getline on std :: cin

有什么好的理由可以解释:

std::string input;
std::getline(std::cin, input);
Run Code Online (Sandbox Code Playgroud)

getline调用不会等待用户输入?cin的状态是否以某种方式搞砸了?

c++ cin getline

6
推荐指数
1
解决办法
2695
查看次数

如何在c ++中使用getline命令?

我正在尝试将cout命令转换为c ++中的getline命令.

这是我试图改变的代码....

for (int count=0; count < numberOfEmployees; count++)
    {
        cout << "Name: ";
        cin >> employees[count].name; 

        cout << "Title: ";
        cin >> employees[count].title;

        cout << "SSNum: ";
        cin >> employees[count].SSNum;

        cout << "Salary: ";
        cin >> employees[count].Salary;

        cout << "Withholding Exemptions: ";
        cin >> employees[count].Withholding_Exemptions; 
    }
Run Code Online (Sandbox Code Playgroud)

我正试图改变这一行:cin >> employees[count].name;这一行:cin >> employees[count].title;进入getlines.有人可以帮忙吗?

谢谢

c++ getline

6
推荐指数
2
解决办法
6万
查看次数

使用std :: getline检测输入结束

我有一个包含以下代码段的代码:

std::string input;
while(std::getline(std::cin, input))
{   
    //some read only processing with input
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序代码时,我通过文件in.txt(使用gedit创建)重定向stdin输入,它包含:

ABCD
DEFG
HIJK
Run Code Online (Sandbox Code Playgroud)

上面的每一行都以in.txt文件中的一行换行结束.

我面临的问题是,在while循环运行3次后(对于每一行),程序控制不会向前移动并且卡住.我的问题是为什么会发生这种情况,我该怎么做才能解决问题?

一些澄清:

我希望能够从命令行运行程序:

$ gcc program.cc -o out
$ ./out < in.txt
Run Code Online (Sandbox Code Playgroud)

附加信息:

我做了一些调试,发现while循环实际上运行了4次(第四次输入为空字符串).这导致循环编程停止,因为//只有输入读取的某些处理无法完成其工作.

所以我提出的问题:

1)为什么第四个循环运行?

在while循环条件下使用std :: getline()的基本原理必须是,当getline()无法再读取任何输入时,它返回零,因此while循环中断.

与此相反,while循环继续使用空字符串!那么为什么get循环条件中的getline呢?设计不是那么糟糕吗?

2)如何在不使用break语句的情况下确保while不会第四次运行?

现在我使用了break语句和字符串流,如下所示:

std::string input;
char temp;
while(std::getline(std::cin, input))
{       
    std::istringstream iss(input);
    if (!(iss >>temp))
    {    
        break;
    } 
    //some read only processing with input
}
Run Code Online (Sandbox Code Playgroud)

但显然必须有一种更优雅的方式.

c++ stdin gedit getline while-loop

6
推荐指数
2
解决办法
2万
查看次数

在C++中使用带有文件输入的getline()

我试图用C++做一个简单的初学者任务.我有一个包含"John Smith 31"行的文本文件.而已.我想使用ifstream变量读取此数据.但是我想把名字"John Smith"读成一个字符串变量,然后将数字"31"读成一个单独的int变量.

我尝试使用getline函数,如下所示:

ifstream inFile;
string name;
int age;

inFile.open("file.txt");

getline(inFile, name); 
inFile >> age; 

cout << name << endl;
cout << age << endl;  

inFile.close();    
Run Code Online (Sandbox Code Playgroud)

这个问题是它输出整行"John Smith 31".是否有一种方法可以告诉getline函数在获得名称之后停止然后再"重启"以检索数字?没有操作输入文件,那是什么?

c++ getline

6
推荐指数
2
解决办法
8万
查看次数

标签 统计

getline ×10

c++ ×7

cin ×2

awk ×1

c ×1

file ×1

gedit ×1

get ×1

readline ×1

stdin ×1

string ×1

swift ×1

while-loop ×1

whitespace ×1