アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めて質問させていただきます。

C++でテキストファイルに書かれている行列をint型の二次元配列に格納したいと考えています。
テキストファイルには
[]1[]-1[]1[].....
[]1[]-1[]-1[].....
....
([]はスペースを表しています。)
ファイルにはこのような行列が並んでいて、この行列をint型の二次元配列に格納したいと考えています。
現在のソースコードは以下の通りです。

void readText(){
std::ifstream ifs("ファイル名");
std::string str;
std::string target = "-1";
std::string replacement = "0";
const char *pack[4096];
int i = 0;
int n = 数;//取得したい列数
if (ifs.fail()){
std::cerr << "失敗" << endl;
}
while (getline(ifs, str) && i < n){

//-1を0に置換
if (!target.empty()) {
std::string::size_type pos = 0;
while (pos = str.find(target, pos), pos != std::string::npos) {
str.replace(pos, target.length(), replacement);
pos += replacement.length();
}
pack[i] = str.c_str();
std::cout << "pack[" << i << "]=\n" << "[" << pack[i] << "]" << endl;
i = i + 1;
}
}
}
実行結果として
pack[0]=[ 1 0 1....
pack[1]=[ 1 0 0....
......
このようにchar型の配列に置換した状態で格納出来ていることが確認できました。
このchar型に格納されたものをint型の二次元配列に格納する方法がわかりません。
文字列として格納されているはずなので、整数型に変換してからのような気もするのですが、pack[0]の要素を指定して、数値変換する方法がわかりません。
int num[0][0]=atoi(pack[0]の最初の要素1);

上記のようにして、各int num[n][n]にテキストファイルの行列の各n行n列を保存する方法を教えていただきたいです。
よろしくお願いします。

A 回答 (1件)

std::stringstream を使えばいいのでは?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!