【问题标题】:String Delimters字符串分隔符
【发布时间】:2014-09-08 09:29:40
【问题描述】:

我知道这个问题已经被问过很多次了,但他们中的大多数只检索到 1 个数据。我有一个文本文件,它以使用冒号分隔的方式存储数据,但随后我需要检索 3 和 1 个数据,并根据问题用 2 个分隔符分隔。 例如: 阿德里安:ee25f924b7df4d4fb93b3da96ee342b1:1

格式如下

username:passwordsalthash:userclearance

是否可以只提取“passwordsaltash”?像这样?

do{
        stringstream retrieve(retSalt);
        cout << "Enter username that you want salt to be retrieved"<< endl;
        cin >> rUsername;

       getline (retrieve,gUsername,':');
       getline (retrieve,gSalt,':');
       getline (retrieve,gUserClearance,':');

        inputFile.close();
        if (rUsername != gUsername){
        cout << "User not available!" << endl;
        }        
        } while (rUsername != gUsername);

这就是我的代码的样子,但程序无法读取下一行。只接受第一行用户名,输出最后一行用户名

【问题讨论】:

  • 它对你有用吗?如果不是,究竟是什么不起作用?
  • 它对我不起作用,代码完全错误。 get 行有默认分隔符吗?
  • @user3007600:嗯,does it?标准库的文档很好,你知道...

标签: c++ delimiter


【解决方案1】:

你在正确的轨道上,看看the manuals会告诉你细节。

通常的免责声明,此代码没有必要的错误检查。

#include <iostream>
#include <fstream>

int main()
{
    std::ifstream ifs( "shadow.txt" );
    std::string user, pass, clearance;
    std::getline( ifs, user, ':' );
    std::getline( ifs, pass, ':' );
    std::getline( ifs, clearance );
    ifs.close();
    std::cout << "User: '" << user << "'\n"
                 "Pass: '" << pass << "'\n"
                 "Clearance: '" << clearance << "'\n";
    return 0;
}

【讨论】:

  • do{ 字符串流检索(retSalt); cout > r用户名; getline (retrieve,gUsername,':'); getline (retrieve,gSalt,':'); getline (retrieve,gUserClearance,':');输入文件.close(); if (rUsername != gUsername){ cout
  • @user3007600:好吧,看看我的getline 声明,然后看看你的声明,发现你在做什么不同。 (提示:它们并不完全相同。)或者,阅读我链接的文档的“注释”部分。
猜你喜欢
  • 2014-02-10
  • 2023-02-25
  • 1970-01-01
  • 2014-06-29
  • 2018-09-17
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多