我是C ++的新手,我已经尝试了所有我现在的研究,但到目前为止没有运气,这是我应该做的:
我目前仍然坚持第一部分。
int main () {
int const SIZE = 500;
char sentences[SIZE];
char* pointers[SIZE];
do {
cout<<"Please enter small sentences, hit enter to continue or 0 to stop: "<<endl;
cin.getline(sentences, 30);
*pointers = sentences;
cin.ignore();
} while (!(cin.getline>>0));
system ("PAUSE");
return 0;
}
有人可以帮忙吗?
答案 0 :(得分:0)
您不是在数组中附加字符,也不是在指针数组附加指针。
以下是您需要执行的一些步骤:
1.维护&#34;句子中的下一个可用位置的索引或指针。阵列。
2.从文件文件中读取字符串后,将其内容复制到&#34;句子中的下一个可用位置&#34;阵列。请参阅std :: string :: c_str()或std :: string :: data()以将字符串转换为&#34; char *&#34;。
3.维护指针数组中下一个可用位置的指针或索引
4.将句子指针复制到指针数组中的下一个可用位置
5.按字符串的长度推进句子指针
6.将指针指针前进一个。
未提供代码,因为这会破坏作业的目的。
答案 1 :(得分:0)
这是一个提示 - 声明基本数据,您需要使用方法来处理这些数据:
class Buffer //buffer data combined with methods
{
private:
char* buffdata; //buffer to hold raw strings
int buffsize; //how big is buffdata
int bufflast; //point to null terminator for last saved string
char** ray; //declare ray[raysize] to hold saved strings
int raysize; //how big is ray[]
int raycount; //count how many strings saved
//methods here
public:
Buffer() //constructor
{ // you figure out what goes here...
}
~Buffer() //destructor
{ // release anything stored in buffers
}
add(char *str); //define method to add a string to your data above
get(unsigned int index); //define method to extract numbered string from stored data
};
答案 2 :(得分:-1)
SPOILER ALERT
#include <cstring>
#include <iostream>
int main() {
const int SIZE = 500;
char sentenceBuffer[SIZE] = {0};
char* sentences[SIZE / 2] = {0}; // shortest string is a char + '\0'
int sentenceCount = 0;
char* nextSentence = &sentenceBuffer[0];
std::cout << "Enter sentences. Enter 0 to stop.\n";
while (std::cin.getline(nextSentence, SIZE - (nextSentence - &sentenceBuffer[0]))) {
if (0 == std::strcmp(nextSentence, "0")) {
break;
}
sentences[sentenceCount] = nextSentence;
++sentenceCount;
nextSentence += std::cin.gcount(); // '\n' stands in for '\0'
}
for (int i = sentenceCount - 1; i != -1; --i) {
std::cout << sentences[i] << "\n";
}
return 0;
}