質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

860閲覧

getline関数でファイルの最初から最後までを読み取れない

yoshi94les

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/10/28 03:59

前提・実現したいこと

string url=何かしらのURL
http::WebClient x(url)を使い接続の要求をして
接続先には一行ごとに1つのファイルが入っていて3行あり合計3つのファイルが存在します(テキストファイル2つとpngファイル1つ)。
その3つのファイルをURLとしてアクセスし、アクセスした内容をファイルとして保存したいです

発生している問題・エラーメッセージ

得るためにgetline関数を用いて中身を読み取り読み取ったファイル名を使いアクセスしたいのですが一行目のファイルにしかアクセスすることができません。

該当のソースコード

C++
#include <iostream>
#include <webcli.hpp>
using namespace std;

void read_body(http::WebClient& x, string s)
{
ofstream fx(s);
if (!fx) {
cerr << "cannot open\n";
return;
}

char ch;
while (x >> noskipws >> ch)
fx << ch;
}

int main(int argc, char* argv[])
{
// 接続して要求を送る
vector<string> a(argv,argv+argc);
string url=a[1];
http::WebClient x(url);
if (!x) {
cout << x.error << "\n";
return 1;
}

string s;
while(getline(x,s)){
cout<<s<<endl;
x.request("URL名"+s);
read_body(x,s);
}

for(const string& s : a){
cout<< s <<endl;
}
return 0;
}

試したこと

x.requestとread_bodyをwhile文の中からなくすとすべて出力することができるのですが、入れると一行目までしか出力されなかったです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2020/10/28 16:13

お使いのwebcli.hppとやらを検索しても情報が出ません。どのライブラリですかね
yoshi94les

2020/10/28 16:57

webcli.hppは自分が所属している研究室のヘッダファイルなので気にしなくて大丈夫かと思います。
guest

回答1

0

自己解決

getlineで取得した内容をvectorに入れることでできるようになった

投稿2020/10/28 19:11

yoshi94les

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問