讓我們從頭開始,我對C++完全沒有經驗,但是我得到了這個項目來連接一個POS和一個verifone。我們沒有標準的驗證SDK,但有一些自定義的。分割讀取文件C++
首先,我需要準備好要發送到C++的數據,C++會將它發送到Verifone。這是我卡住的地方,我有一個.txt文件,我可以用C++讀取,但現在我需要分割數據。
這是我當前的代碼:
#include "stdafx.h"
#include <sstream>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
string file_get_contents(const char *filename)
{
ifstream in(filename);
if (in.fail())
{
cerr << "File not found: " << filename << endl;
return "";
}
std::stringstream buffer;
buffer << in.rdbuf();
in.close();
return buffer.str();
}
int main(int argc, char **argv)
{
vector<string> strings;
string contents = file_get_contents("C:/wamp/www/cmd/config.txt");
string s;
while (contents, s, '||') {
cout << s << endl;
strings.push_back(s);
}
cout << s; // ECHO CONTENTS
std::cin.ignore(); // pause
return 0;
}
有了這個代碼我的控制檯只是停留空白,正在顯示的數據。 滿弦我分裂是:
"notepad://amount=10320.53||session_id=7946548443287465/"
,我想要的結果是獲得一個使用「量」和「SESSION_ID」爲鍵,作爲值值的數組。
達到此目的的最佳方法是什麼?
我用下面的代碼來實際顯示在我的控制檯中的字符串這是工作:
int main(int argc, char **argv)
{
string contents = file_get_contents("config.txt");
cout << contents; // ECHO CONTENTS
std::cin.ignore(); // pause
return 0;
}
這聽起來像你可能需要學習如何使用調試器來逐步通過你的代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
您使用的是哪種C++版本?如果你使用C++ 11,你可以使用[正則表達式](http://www.cplusplus.com/reference/regex/)。 – Schrieveslaach
'while(contents,s,'||')'這個條件應該做什麼? –