2016-12-06 1 views
1

J'ai écrit ce morceau de code pour essayer leveldb. J'utilise le temps Unix comme clés. Pour les valeurs qui ont des espaces, seule la dernière partie est enregistrée. Voici le code. Je suis sous Linux noyau 4.4.0-47 génériquePourquoi ce code leveldb tronque-t-il les "std :: string" qui contiennent des espaces?

while (true) { 
    std::string note; 
    std::string key; 
    std::cout << "Test text here "; 
    std::cin >> note; 
    std::cout << std::endl; 

    if(note.size() == 0 || tolower(note.back()) == 'n') break; 
    key = std::to_string(std::time(nullptr)); 
    status = db->Put(write_options, key, note); 

    if(!status.ok()) break; 
    } 

    std::cout << "Read texts........" << std::endl; 
    leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions()); 
    for(it->SeekToFirst(); it->Valid(); it->Next()){ 
     std::cout << it->key().ToString() << " " << it->value().ToString() << std::endl; 
    } 

    delete db; 

Répondre