2

これは現時点での私の機能です

long long int File::Getline3(int user1, long long int user3)
{
std::string filename = std::to_string(user1);

std::ifstream fin(filename + ".txt");
fin.getline (line1, 5);
fin.getline (line2, 5);
fin.getline (line3, 20);
fin.close();

user3 = (atoi(line3));

return user3;
}

ほとんどの数値を返すようですが、すべてではなく、ごちゃごちゃした形式で返されます。

私のエラーが行の読み取り (getline) にあるのか、変換 (atoi) にあるのか、それを返すにあるのかわかりません。

(ヘッダーファイルで宣言された line1、line2、line3 char)

3 行目は 16 桁です。

4

2 に答える 2

5

私はlong long intそれがすべきではないと思いますatoiが、strtoll

long long int strtoll(const char *nptr, char **endptr, int base);

は文字line3列だと思われますが、次のように使用できます。

char* endptr = NULL;
user3 = strtoll(line3.c_str(), &endptr, 10);

c++また、使用できるようにマークしたので、 http : //www.cplusplus.com/reference/string/stoll/

コメントの後に編集strtoll:を取り、const char*その内容を に変換しますlong long int。endptr が でない場合、最初の無効な文字のアドレスをNULLに格納します。番号に を指定することもできます。strtoll()*endptrbase

あなたはそうし(atoi(line3));ましたが、atoiまた期待しているconst char*ので、それは(使用方法のために)であるにline3違いないと思いました。そのため、オブジェクト自体ではなく、文字列の実際のデータを取得するためにstd::string、暗闇の中でc_str()

もちろん、長い長いものにatoi使用できます:)atoll

于 2014-02-19T13:46:02.350 に答える
0

文字列 as の左端から 1 文字ずつ読み取り、桁ごとの累積値を計算して加算します。

于 2015-03-03T14:58:37.987 に答える