Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用stdin读取文本文件,然后遍历多个数组_C++_Arrays_Text_Stdin - Fatal编程技术网

C++ 使用stdin读取文本文件,然后遍历多个数组

C++ 使用stdin读取文本文件,然后遍历多个数组,c++,arrays,text,stdin,C++,Arrays,Text,Stdin,我得到了一个文本文件,它是一行字符串。例如: 我是约翰 我需要使用stdin读取文件,然后将每个字符遍历到多个数组中,其中每行向左移动一个字符: 第1行=[I',m',J,o,h,n] row2=[',m,J,o,h,n,I] row3=[m,J,o,h,n,I'] 第4行=[,J,o,h,n,I',,m] rown=[n,I',m,,J,o,h] 需要注意的是,数组的长度和我创建的数组的数量是可变的,它们取决于文本文件中字符串的长度(n*n)。在本例中,它将是8*8个字符,因此我需要创建8个

我得到了一个文本文件,它是一行字符串。例如:

我是约翰

我需要使用stdin读取文件,然后将每个字符遍历到多个数组中,其中每行向左移动一个字符:

第1行=[I',m',J,o,h,n]

row2=[',m,J,o,h,n,I]

row3=[m,J,o,h,n,I']

第4行=[,J,o,h,n,I',,m]

rown=[n,I',m,,J,o,h]

需要注意的是,数组的长度和我创建的数组的数量是可变的,它们取决于文本文件中字符串的长度(n*n)。在本例中,它将是8*8个字符,因此我需要创建8个数组,每个数组的长度为8。
有什么帮助吗?

我会将数据读入
std::string

我将创建一个
std::vector
来保存所有结果

我将使用向量的
push_back
成员向向量追加一个字符串

然后我将使用
std::rotate
将字符串旋转一个字符


我将重复追加和旋转字符串中包含的字符数。

Jerry是正确的,为您的问题提供了一个清晰的解决方案。 使用
std::vector
保存数据并执行以下操作可能会更好:

int i = 0;
do
{
    for (int j = 0; j < len; j++)
    {
        data[i][j] = input[(i+j)/len];
    }
} while (i++ < len) // len is 8 in your case
inti=0;
做
{
对于(int j=0;j
欢迎来到堆栈溢出。您知道如何将一行读取到数组中吗?您已经尝试了哪些代码?对于
std::vector
(假设您添加了缺少的部分),您的代码将在不修改的情况下工作(假设您添加了缺少的部分)。我宁愿仅存储原始字符串,并且仅在访问元素时应用转换,但不知怎的,我认为写一个答案太差劲了。以前,我不太可能完全回答OP提出的问题,但在许多情况下确实有可能。@Leoid9:我想我可以,但我不太愿意为看起来像是家庭作业问题的问题提供现成的解决方案。