0
行間の区切り文字が '\ n'であるところの.csvファイルを解析する必要がありますが、任意の値に '\ n' 。 私はこの関数を書いています。これは実際にmainに置いたときに機能しますが、mainから切り離されても変数は変更されません。ここで 別の関数でgetline()を使用する
void getWholeValue(ifstream &ip, string l) {
getline(ip, l, ',');
if (l[0] == '"') {
string s;
getline(ip, s, '"');
l = (l + s);
}}
は、私は関数を呼び出す方法の例です:
struct Line {string customer;};
int main(){
Line *l = new Line;
while (ip.good())
{getWholeValue(ip, l->customer);
}
delete l;
}
だから私はこのようにgetlineのを呼び出す際に、正確に何が起こりますか?ポインタに関する問題はありますか?多分、私が望むものを得るための正確な方法がありますか? ご協力いただきありがとうございます。
と[STD :: getlineの()](http://en.cppreference.com/w/cpp/stringを見て:単純にあなたの
getWholeValue(ifstream &ip, string l)
ヘッダーを変更/ basic_string/getline)。抽出された内容は 'std :: string&'である第2引数を介して返されます。結果が 'getWholeValue()'の外側に現れるようにしたい場合、 'string l'も' string&l'を参照することができます。 – Scheff
Btw。私は 'Line * l = new Line;'と 'delete l;'のモチベーションは見ません。それを 'Line l;'に変更し、 'delete l;'を削除した場合も同様に動作します。この変更のために、 'l'はヒープ上ではなくスタック上に格納され、私は不利益としてカウントしません。 (もちろん、 'l-> customer'を' l.customer'に変更しなければなりません) – Scheff
'getWholeValue'が文字列を返さないのはなぜですか? APIをより洗練されたIMHOにします。 'std :: string getWholeValue(ifstream&ip)' –