cout<<"enter second string:\t";
cin>>str;
cin.get(str,200);
здесь сначала вы пытаетесь прочитать второе слово дважды в одну и ту же переменную. прокомментируйте один из них и попробуйте напечатать содержание ул.
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char str[200];
string str1;
cout<<"Enter a string:\t";
getline(cin,str1);
cout<<str1 <<endl;
cout<<"enter second string:\t";
// cin>>str;
cin.get(str,200);
cout<<str<<endl;
}
То, что у вас нет соединений, реализованных СУБД, не означает, что вы не можете иметь несколько таблиц. В App Engine они называются «типами сущностей», и вы можете иметь их столько, сколько захотите.
Как правило, вам нужно денормализовать ваши данные, чтобы избежать необходимости частых объединений. В тех немногих ситуациях, когда они неизбежны, вы можете использовать другие методы, например, выполнить соединение в пользовательском коде.
Переключение с реляционной базы данных в хранилище данных App Engine требует смены парадигмы для разработчики при моделировании своих данных. Посмотрите здесь , чтобы получить лучшую идею. Это потребует от вас заранее подумать о том, как вписать вашу проблему в ограничения, накладываемые хранилищем данных, но если вы сможете, то вам гарантировано, что он будет работать быстро и масштабироваться.
Объединение его в одну большую таблицу - это всегда вариант, но в большинстве случаев оно приводит к излишне большим и избыточным таблицам, что делает ваше приложение медленным и трудным в обслуживании.
Вы также может эмулировать объединение, перебирая результаты запроса и выполняя второй запрос для каждого результата, найденного для первого запроса. Если у вас есть SQL-запрос
SELECT a.x FROM b INNER JOIN a ON a.y=b.y;
, вы можете эмулировать его следующим образом:
for b in db.GqlQuery("SELECT * FROM b"):
for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
print a.x